package 回溯算法;

public class findTargetSumWays494 {
    /**
     * 这里的所有的数字都是需要应用的 和数组和是不一样的，数组和是可以不用到 所以在判断的时候就不能以长度来判断结束的标志。
     */
    private int count = 0;// 表示有多少中情况

    public int findTargetSumWays(int[] nums, int target) {
        if (nums.length == 0) {
            return count;
        }
        dfs(nums, 0, 0, target);
        return count;
    }

    private void dfs(int[] nums, int index, int sum, int target) {
        //一定要全部用完  所以这个是没有回溯
        if (index == nums.length) {
            if (sum == target) {
                count++;
                return;
            }
        }
        if (index > nums.length) {
            return;
        }
        dfs(nums, index + 1, sum + nums[index], target);
        dfs(nums, index + 1, sum - nums[index], target);
    }
}
